package main

import "fmt"

func search(nums []int, target int) bool {
	l := len(nums)
	if l == 0 {
		return false
	}
	if l == 1 {
		return target == nums[0]
	}
	if target == nums[0] {
		return true
	}
	if target > nums[0] {
		i := 1
		for {
			if i == l {
				return false
			}
			if target == nums[i] {
				return true
			}
			if nums[i] < nums[i-1] {
				return false
			}
			if target < nums[i] {
				return false
			}
			if target > nums[i] {
				i++
			}
		}
	}
	if target < nums[0] {
		i := l - 1
		for {
			if i == 0 {
				return false
			}
			if target == nums[i] {
				return true
			}
			if nums[i] < nums[i-1] {
				return false
			}
			if target > nums[i] {
				return false
			}
			if target < nums[i] {
				i--
			}
		}
	}
	return false
}

func main() {
	s := []int{2, 5, 6, 0, 0, 1, 2}
	fmt.Println(search(s, 0))
}
